package com.example.demo.binary;

import java.nio.charset.StandardCharsets;

/**
 * 英文    ->  二进制 <br>
 * <p>
 * 二进制   ->  中文
 *
 * @author WangYX
 * @version 1.0.0
 * @date 2024/03/13 11:16
 */
public class EnglishToBinary {

    public static void main(String[] args) {
        String binary = englishToBinary("I am China");
        System.out.println(binary);

        String s = binaryStrToEnglish(binary);
        System.out.println(s);
    }

    /**
     * 英文转二进制
     *
     * @param englishStr 英文字符串
     * @return String 二进制字符串
     */
    public static String englishToBinary(String englishStr) {
        byte[] bytes = englishStr.getBytes(StandardCharsets.UTF_8);
        StringBuilder sl = new StringBuilder();
        for (byte b : bytes) {
            String binaryString = Integer.toBinaryString(b);
            sl.append(binaryString).append(" ");
        }
        return sl.toString().trim();
    }

    /**
     * 二进制字符串转英文
     *
     * @param binaryStr 二进制字符串 空格隔开每个字符的二进制字符
     * @return String 英文字符串
     */
    public static String binaryStrToEnglish(String binaryStr) {
        StringBuilder sl = new StringBuilder();
        String[] split = binaryStr.split(" ");
        for (String str : split) {
            int i = Integer.parseInt(str, 2);
            sl.append((char) i);
        }
        return sl.toString();
    }


}
